package pers.cz.util;

import cn.hutool.core.date.DateUtil;
import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

/**
 * 模板工具类
 * @program: PostGirl-panent
 * @description: FreeMarkerUtils
 * @author: Cheng Zhi
 * @create: 2022-04-05 14:23
 **/
public class FreeMarkerUtils {

    /***
     * 创建模板对象
     * @param path 模板文件所在的位置
     * @param ftl 生成的文件名
     * @return
     * @throws Exception
     */
    public static Template loadTemplate(String path, String ftl) throws Exception{
        // 第一步：创建一个Configuration对象，直接new一个对象。构造方法的参数就是freemarker对于的版本号。
        Configuration configuration = new Configuration(Configuration.getVersion());
        // 第二步：设置模板文件所在的路径。
        configuration.setDirectoryForTemplateLoading(new File(path));
        // 第三步：设置模板文件使用的字符集。一般就是utf-8.
        configuration.setDefaultEncoding("utf-8");
        // 第四步：加载一个模板，创建一个模板对象。
        Template template = configuration.getTemplate(ftl);
        return template;
    }

    /**
     * 组织模板需要的参数
     * @param entity
     * @param packagePath
     * @return
     */
    public static Map<String, Object> getTemplateParams(Map<String, Map<String, Object>> entity, String packagePath) {

        Map<String, Object> map = new HashMap<>();
        for (String key : entity.keySet()) {
            map.put("packagePath", packagePath);
            map.put("capsTableName", key);
            map.put("lowerTableName", StringUtils.returnFirstLower(key));
            map.put("keyType", StringUtils.returnFirstLower((String) entity.get(key).get("keyType")));
            map.put("keyValue", StringUtils.returnFirstCaps((String) entity.get(key).get("keyName")));
            map.put("swagger", true);
            map.put("currentDate", DateUtil.now());
            map.put("tableDesCriBe", "表的描述信息");
            map.put("columns", entity.get(key).get("columns"));
        }

        return map;
    }


}
